// 用于配置某些组件的常规配置，而无需修改组件（Used to configure the general configuration of some components without modifying the components）

import type { SorterResult } from '../components/Table';
import { isArray } from '@/utils/is';

export default {
  //表格配置（basic-table setting）
  table: {
    // 表格接口请求通用配置，可在组件prop覆盖（Form interface request general configuration）
    // 支持 xxx.xxx.xxx格式（support xxx.xxx.xxx）
    fetchSetting: {
      // 传给后台的当前页字段（The field name of the current page passed to the background）
      pageField: 'page',
      // 传给后台的每页显示多少条的字段（The number field name of each page displayed in the background）
      sizeField: 'pageSize',
      // 接口返回表格数据的字段（Field name of the form data returned by the interface）
      listField: 'items',
      // 接口返回表格总数的字段（Total number of tables returned by the interface field name）
      totalField: 'total',
    },
    // 可选的分页选项（Number of pages that can be selected）
    pageSizeOptions: ['10', '20', '50', '100', '200', '500', '1000'],
    // 默认每页显示多少条（Default display quantity on one page）
    defaultPageSize: 20,
    // 默认尺寸（Default Size）
    defaultSize: 'middle',
    // 默认排序方法（Custom general sort function）
    defaultSortFn: (sortInfo: SorterResult) => {
      const sortInfoArray: { field: any; order: any }[] = [];
      if (!sortInfo) {
        return sortInfoArray;
      }
      if (isArray(sortInfo)) {
        sortInfo.forEach((item) => {
          if (item?.field && item?.order) {
            sortInfoArray.push({
              // 排序字段（The sort field passed to the backend you）
              field: item.field,
              // 排序方式 asc/desc（Sorting method passed to the background asc/desc）
              order: item.order,
            });
          }
        });
      } else {
        const { field, order } = sortInfo;
        if (field && order) {
          sortInfoArray.push({
            // 排序字段（The sort field passed to the backend you）
            field,
            // 排序方式 asc/desc（Sorting method passed to the background asc/desc）
            order,
          });
        }
      }
      // console.log('defaultSortFn', sortInfoArray);
      return sortInfoArray;
    },
    // 自定义过滤方法（Custom general filter function）
    defaultFilterFn: (data: Partial<Recordable<string[]>>) => {
      return data;
    },
  },
  vxeTable: {
    table: {
      border: true,
      stripe: true,
      columnConfig: {
        resizable: true,
        isCurrent: true,
        isHover: true,
      },
      rowConfig: {
        isCurrent: true,
        isHover: true,
      },
      emptyRender: {
        name: 'AEmpty',
      },
      printConfig: {},
      exportConfig: {},
      customConfig: {
        storage: true,
      },
    },
    grid: {
      toolbarConfig: {
        enabled: true,
        export: true,
        zoom: true,
        print: true,
        refresh: true,
        custom: true,
      },
      pagerConfig: {
        pageSizes: [10, 20, 50, 100, 200, 500, 1000],
        pageSize: 20,
        autoHidden: true,
      },
      proxyConfig: {
        form: true,
        props: {
          result: 'items',
          total: 'total',
        },
      },
      zoomConfig: {},
    },
  },
  // 滚动组件配置（scrollbar setting）
  scrollbar: {
    // 是否使用原生滚动样式（Whether to use native scroll bar）
    // 开启后，菜单，弹窗，抽屉会使用原生滚动条组件（After opening, the menu, modal, drawer will change the pop-up scroll bar to native）
    native: false,
  },
};
